package com.team2.outpatient_sys.service.impl;

import com.github.pagehelper.PageHelper;
import com.team2.outpatient_sys.dao.DoctorDao;
import com.team2.outpatient_sys.pojo.Doctor;
import com.team2.outpatient_sys.pojo.DoctorAndDepartment;
import com.team2.outpatient_sys.service.AdminDoctorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class AdminDoctorServiceImpl implements AdminDoctorService {
    @Autowired
    private DoctorDao doctorDao;

    /**
     * 添加新医护人员的服务的实现
     * @param doctor 添加的医护人员实例对象
     * @return 添加新医护人员服务是否成功
     */
    @Override
    public boolean addNew(Doctor doctor) {
        int affectedRows = doctorDao.insertNew(doctor);
        return affectedRows == 1;
    }

    /**
     * 逐一修改医护人员信息所有字段的服务的实现
     * @param doctor 修改的医护人员实例对象
     * @return 修改医护人员信息的服务是否成功
     */
    @Override
    public boolean updateWhole(Doctor doctor) {
        int affectedRows = doctorDao.updateWholeById(doctor);
        return affectedRows == 1;
    }

    /**
     * 根据id删除某一医护人员信息的服务的实现
     * @param doctorId 医护人员信息的id
     * @return 删除医护人员信息是否成功
     */
    @Override
    public boolean deleteById(Integer doctorId) {
        int affectedRows = doctorDao.deleteById(doctorId);
        return affectedRows == 1;
    }

    /**
     * 获取所有医护人员信息的服务的实现
     * @return 获取到的所有医护人员数据的List集合
     */
    @Override
    public List<Doctor> getAll() {
        return doctorDao.queryAll();
    }

    /**
     * 使用分页插件查询某一分页的医护人员信息的实现
     * @param pageNum 查询的分页页码
     * @param pageSize 每一分页的数据个数
     * @return 查询的所有医护人员信息，返回以提供给PageHelper处理得到PageInfo
     */
    public List<Doctor> getByPage(Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        return doctorDao.queryAll();
    }

    /**
     * 使用分页插件查询某一分页的医护人员信息及其对应的科室信息的实现
     * @param pageNum 查询的分页页码
     * @param pageSize 每一分页的数据个数
     * @return 查询医护人员信息及其对应的科室信息的结果
     */
    @Override
    public List<DoctorAndDepartment> getAndDeptByPage(Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        return doctorDao.queryAllAndDept();
    }
}
